unit clsEstado;

interface

uses Dm, dbtables, biblio;

type
  TEstado = class(TObject)
  private
    Est_sigla: string;
  public
    Est_Nome: string;
    Est_per_icms: Double;
    Est_per_Fret: Double;
    Est_Cod_UF: string;
    function Gravar(p_Est_Sigla: string): Byte;
    function Recuperar(p_Est_Sigla: string): Byte;
    function Excluir(p_Est_Sigla: string): Byte;
    procedure Consultar(var p_q: TQuery; p_nome: string);
  end;

implementation

function TEstado.Gravar;
var
  tq: TQuery;
begin
  tq := Tquery.Create(DmInt);
  tq.databasename := dmint.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM Estado where Est_Sigla=:k_Est_Sigla');
  tq.parambyname('k_Est_Sigla').asstring := p_Est_Sigla;
  tq.open;
  if tq.eof then begin
    tq.sql.clear;
    tq.params.clear;
    tq.sql.add('INSERT INTO Estado VALUES(:k_Est_Sigla,:k_Est_Nome,:k_Est_per_icms,:k_Est_per_Fret,:k_Est_Cod_UF)');
  end else begin
    tq.sql.clear;
    tq.params.clear;
    tq.sql.add('UPDATE Estado SET Est_Nome=:k_Est_Nome,Est_per_icms=:k_Est_per_icms,Est_per_Fret=:k_est_per_fret, Est_Cod_UF=:k_Est_Cod_UF WHERE Est_Sigla=:k_Est_Sigla');
  end;
  tq.parambyname('k_Est_Sigla').asstring := strzero(p_Est_Sigla, 2);
  tq.parambyname('k_Est_Nome').asstring := Est_Nome;
  tq.parambyname('k_Est_per_icms').asfloat := Est_per_icms;
  tq.parambyname('k_Est_per_fret').asfloat := Est_per_fret;
  tq.parambyname('k_Est_Cod_UF').AsString := Est_Cod_UF;
  tq.close;
  tq.execsql;
  result := 1;
  tq.close;
  tq.Free;
end;

function TEstado.Recuperar;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.sql.add('SELECT * FROM Estado where Est_Sigla=:k_Est_Sigla');
  tq.Params[0].asstring := strzero(p_Est_Sigla, 2);
  tq.open;
  Est_Sigla := p_Est_Sigla;
  if tq.eof then begin
    Est_Nome := '';
    Est_per_icms := 0;
    Est_per_Fret := 0;
    Est_Cod_UF := '';
    Result := 0;
  end else begin
    Est_Nome := tq.fieldbyname('Est_Nome').asstring;
    Est_per_icms := tq.fieldbyname('Est_per_icms').asfloat;
    Est_per_fret := tq.fieldbyname('Est_per_Fret').asfloat;
    Est_Cod_UF := tq.fieldbyname('Est_Cod_UF').AsString;
    Result := 1;
  end;
  tq.Close;
  tq.Free;
end;

function TEstado.Excluir;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := dmint.db.databasename;
  tq.active := False;
  tq.close;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM Estado WHERE Est_Sigla=:k_Est_Sigla');
  tq.parambyname('k_Est_Sigla').asstring := strzero(p_Est_Sigla, 2);
  tq.execSQL;
  Result := 1;
  tq.close;
  tq.Free;
end;

procedure TEstado.Consultar;
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from Estado where Est_Nome>=:k_Est_Nome order by Est_Nome');
  p_q.parambyname('k_Est_Nome').asstring := p_nome;
end;

end.
